<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>

  <body>
    <script>
      var removeElement = function (nums, val) {
        // 方法一：双指针（）---时间：O（n）（）---空间：O（1）（）
        // let fast = 0;
        // let slow = 0;
        // while (fast < nums.length) {
        //   if (nums[fast] !== val) {
        //     nums[slow] = nums[fast];
        //     slow++;
        //   }
        //   fast++;
        // }
        // return slow;

        // 方法一：双指针优化（还不是特别理解https://leetcode.cn/problems/remove-element/solutions/730203/yi-chu-yuan-su-by-leetcode-solution-svxi/?orderBy=most_votes）
        // ---时间：O（n）（）---空间：O（1）（）
        // 当nums=[1,2,3,4,5,6],val=1时每个数都得移动一遍
        let slow = 0;
        // 为什么不是nums.length-1，
        // 改fast=nums.length-1，下面fast-1改为fast不行
        // 2024-01-09
        // 改fast=nums.length-1，下面fast-1改为fast，slow<fast改为slow<=fast
        let fast = nums.length;
        while (slow < fast) {
          if (nums[slow] === val) {
            nums[slow] = nums[fast-1];
            fast--
          } else {
            slow++;
          }
        }
        return slow
      };
      // console.log(removeElement([3, 2, 2, 3], 3));
      console.log(removeElement([1,2,3,4,5,6], 1));
      // console.log(removeElement([2], 3));
      // console.log(removeElement([1], 1));
    </script>
  </body>
</html>
